package ve.usb.buscame;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Arrays;

public class Conversacion extends Activity {
	static boolean entreConversacion = false;
	static String opcionMensaje = "";
	static String mensajeAmigo = "";
	static TextView textView;
	static Editor editor;
	boolean broadcast = false;
	String miMensaje = "";
	String aparecer = "";
	String selec = "";
	String todos="";
	CharSequence edoActual;
	static ArrayList<String> amigosBroadcast = null;
	
	
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.conversacion);
        entreConversacion = true;
        Log.d("Conversacion", "Seleccionaste a: '" + Cliente.userConv + "'");
        Runnable r = new Refrescar();
        Thread refrescar = new Thread(r);
        refrescar.start();
        
   	 	if (Cliente.userConv.equals("Enviar mensaje a todos")){
   	 		broadcast = true;
   	 		Log.d("Conversacion", "Seleccionaste la opcion de broadcast");
   	 	}
   	 
   	 textView = (TextView) findViewById(R.id.conversacion);
   	 Log.d("Conversacion", "Fin onCreate()");
    } // fin metodo onCreate
        
    protected void onPause(){
    	super.onPause();
    	Log.i("Conversacion", "onPause()");
    	
    	SharedPreferences conver = getPreferences(MODE_PRIVATE);
    	editor = conver.edit();
    	editor.putString(Cliente.userConv, textView.getText().toString());
    	editor.commit();
    
    }
    
    protected void onResume(){
    	super.onResume();
    	Log.d("Conversacion", "Comienzo de onResume()");
    	
    	SharedPreferences conver = getPreferences(MODE_PRIVATE);
    	//textView.setTextColor(getResources().getColor(R.color.opaque_red));
    	textView.setText(conver.getString(Cliente.userConv,""));
    	
    	//Boton de enviar
	    final Button boton = (Button) findViewById(R.id.btnEnviar);
	    boton.setOnClickListener(new View.OnClickListener() {
		public void onClick(View v) {    	
	        // Perform action on click
	        EditText et = (EditText) findViewById(R.id.texto);
	        et.setText(et.getText().toString());
	        miMensaje = et.getText().toString();
	        if(broadcast){
	        	// Broadcast|#personas|persona1$persona2...$personaN|Mensaje
//TODO Convertir de arreglo a string y colocar el '$' entre cada amigo
	        	String arrayPersonas = "";
//	        	String numPersonas = String.valueOf(amigosBroadcast.size());
	        	for (String amigo : amigosBroadcast){
	        		arrayPersonas += amigo.trim() + "$";
	        	}
	        	opcionMensaje = "Broadcast|" + et.getText().toString() + "|" + arrayPersonas;
	        	Log.w("Conversacion", "arrayPersonas: " + opcionMensaje);	        	
	        	
	        	//TODO amigosBroadcast
	        	//TODO opcionMensaje = "Broadcast|"
	        	
	        }else{
	        	if (!et.getText().toString().trim().equals("")){
	        		opcionMensaje = "1|"+et.getText().toString();
		        	if (!et.getText().toString().equals("")){
		        		textView.append("yo: "+ et.getText().toString()+"\n");
		        	}
		        	ajustarScroll(textView);
	        	}
	        }
	        et.setText("");
	        } //fin metodo onClick
	    });
	    
	    //Boton de cancelar
		final Button btnCancel = (Button) findViewById(R.id.btnCancel);
		btnCancel.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				// Perform action on click
				EditText et = (EditText) findViewById(R.id.texto);
				et.setText("");
	    	}
		});
		
		final AlertDialog.Builder builder = new AlertDialog.Builder(this);
		final String [] plantillaMensajes = 
								{"Hola! Donde estas?","Quieres comer?",
								 "Hablamos luego que estoy en clase",
								 "En donde nos vemos?", "Buscame en ","Nos vemos a las ",
								 "Dame la cola por favor!","Esperame en "};
								
		//Boton de Plantilla Mensajes
		final Button btnTextoPred = (Button) findViewById(R.id.btnTextoPred);
		btnTextoPred.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v){
				// Perform action on click
				
				builder.setTitle("Escoja un mensaje");
				builder.setItems(plantillaMensajes, new DialogInterface.OnClickListener() {
				    public void onClick(DialogInterface dialog, int item) {
				        
				        selec = plantillaMensajes[item];

						// se muestra el mensaje selecciona en pantalla de la conversacion
//						opcionMensaje = "1|"+selec.toString();
						EditText et = (EditText) findViewById(R.id.texto);
				        et.setText(selec.toString());	
				    }
				});
				AlertDialog alert = builder.create();
				alert.show();
				      	 
	        }			
		});
			
		textView.setMovementMethod(ScrollingMovementMethod.getInstance());

    } // fin del onResume()
    
    
    // metodo para hacer el scroll automatico y mantener el ultimo mensaje en pantalla
    public static void ajustarScroll(TextView scrollTextView) { 
        int countLinea = scrollTextView.getLineCount(); 
        int viewHeight = scrollTextView.getHeight(); 
        int pixelsPerLine = scrollTextView.getLineHeight(); 
        //Calculamos la diferencia entre el tam de la vista y la altura total de texto en pantalla
        int resta = ((countLinea)* pixelsPerLine) - viewHeight; 
        if (resta < 1)
        	return;
        scrollTextView.scrollTo(0,resta); 
    } // fin metodo ajustarScroll
	
    public static void imprimir(){
	    		Log.d("Conversacion", "Metodo imprimir. Tengo mensajes de: " + Cliente.userConv 
	    				+ ". Llamo al handler Principal.actualizarScreen");
	    		Principal.handler.post(Principal.actualizarScreen);
		    	ajustarScroll(textView);
    }
    
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
        	//Para que el hilo Refrescar termine de ciclar.
      	  	Refrescar.seguirRefrescando = false;
      	  	Log.d("Conversacion","Cambie el valor de Refrescar.seguirRefrescando.");
        }
        return super.onKeyDown(keyCode, event);
    }
     
}//fin de la actividad